package core.logic.services.updateServices;

import java.util.ArrayList;

import javax.swing.JOptionPane;

import core.logic.dataAccess.AdresDAO;
import core.logic.dataAccess.EigenaarDAO;
import core.logic.dataAccess.ParameterDAO;
import core.logic.dataAccess.PersoneelDAO;
import core.logic.dataAccess.PersoonDAO;
import core.logic.dataAccess.Persoon_NationaliteitDAO;
import core.models.dataModels.UpdatePersoneelModel;
import core.models.domainModel.Adres;
import core.models.domainModel.Personeel;
import core.models.domainModel.Persoon;
import core.models.domainModel.PersoonNationaliteiten;

//@Author: Wijnen David [c1026300] 2013-12-09 
//-------------------------------------------
//@Description: Deze Controller is voor personeel te verwijderen

public class UpdatePersoneelService {

	public static UpdatePersoneelModel getUpdatePersoneelModel(Personeel personeel)
	{
		// nieuw updatemodel maken
		UpdatePersoneelModel model = new UpdatePersoneelModel();
		
		// standaard gegevens invullen in het model
		model.setAlleEigenaars(EigenaarDAO.getAllEigenaars());
		ArrayList<PersoonNationaliteiten> pnLijst = new ArrayList<PersoonNationaliteiten>();
		ArrayList<String> landenLijst = (ParameterDAO.getMogelijkeLandcodes("LandCode"));
		
		for(String land : landenLijst){
			PersoonNationaliteiten pn = new PersoonNationaliteiten(0, 0, land);
			pnLijst.add(pn);
		}
		model.setAlleNationaliteiten(pnLijst);
		
		// personeel opnieuw inladen omdat niet alle gegevens ingevuld zijn
		personeel = PersoneelDAO.getPersoneelByID(personeel.get_personeelId());
		// personeel > persoon invullen (adres wordt ook in deze procedure ingvuld)
		personeel.set_persoonId(PersoonDAO.getPersoonById(personeel.getPersoon().getPersoonId()));
		
		// volledig ingevuld personeelslid invullen in het model
		model.setPersoneel(personeel);
				
		// ingevuld model terugstruen
		return model;
	}
	
	
	public static void setUpdatePersoneelModel(UpdatePersoneelModel model)
	{
		Personeel personeel = model.getPersoneel();
		Persoon persoon = personeel.getPersoon();
		persoon.setPersoonNationaliteiten(model.getNationaliteitenPersoneel());
		Adres adres = persoon.getAdres();
				
		//alle tabellen updaten
		AdresDAO.updateAdres(adres);
		PersoonDAO.updatePersoon(persoon);
		Persoon_NationaliteitDAO.updatePersoonNationaliteiten(persoon);
		PersoneelDAO.updatePersoneel(personeel);
		
		JOptionPane.showMessageDialog(
				null,
				"Gegevens van " + persoon.getNaam() + " " + persoon.getVoornaam() + " zijn aangepast.",
				"Persoon update info.",
				JOptionPane.INFORMATION_MESSAGE);
		
	}
	
	
	
}
